package de.andreavicentini.teatralia.pages;

import java.util.Locale;

import org.magiclabs.htmlx.HTMLString;
import org.magiclabs.htmlx.ProgrammaticTextStructure;
import org.magiclabs.htmlx.TextStructure;

import de.andreavicentini.teatralia.pages.Person.Sex;

public class Tokens {

	public enum Keys implements TextStructure.TextKey {
		attore_M, attore_F, regista_M, regista_F, luci_F, luci_M, fotografo_M, fotografo_F, born_M, born_F,
		italian_M, italian_F, german_M, german_F, russian_M, russian_F;
		
		public HTMLString get() {
			return TOKENS.get(this);
		}
	}
	
	private final static TextStructure TOKENS = new ProgrammaticTextStructure() {{
		this.add(Keys.regista_F)
			.add(Locale.GERMAN, "Regisseurin")
			.add(Locale.ITALIAN, "Regista")
			;
		this.add(Keys.regista_M)
			.add(Locale.GERMAN, "Regisseur")
			.add(Locale.ITALIAN, "Regista")
		;
		this.add(Keys.attore_F)
			.add(Locale.GERMAN, "Schauspielerin")
			.add(Locale.ITALIAN, "Attrice")
		;
		this.add(Keys.attore_M)
			.add(Locale.GERMAN, "Schauspieler")
			.add(Locale.ITALIAN, "Attore")
		;
		this.add(Keys.luci_M)
			.add(Locale.GERMAN, "Für die Beleuchtung zuständig")
			.add(Locale.ITALIAN, "Addetto alle luci")
		;
		this.add(Keys.luci_F)
			.add(Locale.GERMAN, "Für die Beleuchtung zuständig")
			.add(Locale.ITALIAN, "Addetta alle luci")
		;
		this.add(Keys.fotografo_F)
			.add(Locale.GERMAN, "Fotografin")
			.add(Locale.ITALIAN, "Fotografa")
		;
		this.add(Keys.fotografo_M)
			.add(Locale.GERMAN, "Fotograf")
			.add(Locale.ITALIAN, "Fotografo")
		;
		this.add(Keys.born_F)
			.add(Locale.GERMAN, "Geboren in")
			.add(Locale.ITALIAN, "Nata a")
		;
		this.add(Keys.born_M)
			.add(Locale.GERMAN, "Geboren in")
			.add(Locale.ITALIAN, "Nato a")
		;
		this.add(Keys.italian_F)
			.add(Locale.GERMAN, "Italienerin")
			.add(Locale.ITALIAN, "italiana")
		;
		this.add(Keys.italian_M)
			.add(Locale.GERMAN, "Italiener")
			.add(Locale.ITALIAN, "italiano")
		;
		this.add(Keys.german_F)
			.add(Locale.GERMAN, "Deutsche")
			.add(Locale.ITALIAN, "tedesca")
		;
		this.add(Keys.german_M)
			.add(Locale.GERMAN, "Deutsch")
			.add(Locale.ITALIAN, "tedesco")
		;
		this.add(Keys.russian_M)
			.add(Locale.GERMAN, "Russe")
			.add(Locale.ITALIAN, "russo")
		;
		this.add(Keys.russian_F)
			.add(Locale.GERMAN, "Russin")
			.add(Locale.ITALIAN, "russa")
		;
	}};
	
	public static HTMLString get(String name, Sex sex) {
		return Keys.valueOf(name + "_" + sex).get();
	}
}
